Authorization Code
🚧 Sandbox vs Producción
Los tokens tienen algunas particularidades según el ambiente en el que fueron emitidos. Esto permite el funcionamiento de los ambientes en paralelo y sin interacción entre sí, aumentando así la seguridad y garantizando que eventuales problemas no afecten ambos ambientes simultáneamente.
Es de suma importancia que se realice la lectura de los artículos referentes a los ambientes de Producción y Sandbox.
A continuación un breve resumen de las particularidades mencionadas arriba:
Sandbox
- Los tokens generados en el ambiente de sandbox permiten que el consentimiento se otorgue únicamente para la empresa dedicada al funcionamiento del ambiente;
- El companyId y accountId utilizados en las solicitudes, además de las demás claims del token, derivarán del CNPJ 30306294000145;
- Cualquier usuario con permiso de desarrollador o superior puede realizar el login en el flujo para emitir este token.
Producción
- Los tokens generados en el ambiente de producción permiten que el consentimiento se otorgue para la empresa en la que la aplicación está creada(First-party) o para cualquier empresa a la que esté vinculado el usuario que realizó el login(Third-party);
- El companyId y accountId utilizados en las solicitudes serán los de la empresa para la cual se otorgó el consentimiento;
- Únicamente el login de un usuario operador o superior resultará en un token válido. Utilizar un usuario desarrollador provocará un error al realizar las llamadas a las APIs.
Este es el flujo estándar del Authorization Code necesario para la obtención del Access Token y el Refresh Token. En esta sección vamos a desglosar todo el flujo, con el fin de brindarte a ti, desarrollador, la experiencia más tranquila posible.
-
Primero, la aplicación envía al servidor de autenticación el Client Id y el Redirect URI registrado junto con los alcances autorizados por el usuario final, según el ejemplo:
GET /oauth2/authorize?client_id={client_id}&response_type=code&redirect_uri={redirect_uri}&scope={scope}&prompt=login HTTP/1.1
Host: id.btgpactual.comEn respuesta, en caso de que el proceso sea autorizado, el servidor de autenticación retorna el Authorization Code según lo siguiente:
HTTP/1.1 302 Found
Location: {redirect_uri}?code={authorization_code}&iss=https%3A%2F%2Fid.btgpactual.com -
Tras recibir el Authorization Code, debe realizarse la solicitud del Access Token según el ejemplo a continuación:
POST /oauth2/token HTTP/1.1
Host: id.btgpactual.com
Content-type: application/x-www-form-urlencoded
Authorization: Basic <client_id:client_secret> // Base 64 encoded
code={authorization_code}&redirect_uri={redirect_uri}&grant_type=authorization_code
En esta parte, los servidores de autenticación y autorización de BTG Id verificarán la validez de la información enviada y, en caso de que no haya errores ni códigos inválidos, el servidor devolverá el Access Token y el Refresh Token junto con otra información pertinente como el alcance de la autorización, el id del token, el tipo del token y la duración del token:
HTTP/1.1 200 OK
Content-Type: application/json
{
"access_token":"eyJhbGciOiJS",
"refresh_token":"WV6G4HKBr",
"scope":"apps email openid profile webhooks",
"id_token":"eyJhbGciOiJIUzI1NiJ9.eyJ"
"token_type":"Bearer",
"expires_in":86400
}
¡A partir de aquí, ya con tu Access Token en mano, puedes consumir las APIs según lo permitido por el usuario final!